qx.Class.define("caraffa.widgets.CajaIngresoCustom",
{	
	extend : qx.ui.core.Widget,
	construct : function (usuario, cod_clinica) {
		this.base(arguments);
		cod_clinica ? this.cod_clinica = cod_clinica : this.cod_clinica = 1;
		this._setLayout(new qx.ui.layout.Basic());
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["Medico","Paciente", "Forma de Pago", "Prestacion", "Importe", "Tipo"]);
		this._grdCajaIngresoDiario = new qx.ui.table.Table(model);
			this._grdCajaIngresoDiario.setColumnWidth(0, 100);
			this._grdCajaIngresoDiario.setColumnWidth(1, 200);
			this._grdCajaIngresoDiario.setColumnWidth(2, 230);
			this._grdCajaIngresoDiario.setColumnWidth(3, 230);
			this._grdCajaIngresoDiario.setColumnWidth(4, 80);
			this._grdCajaIngresoDiario.setColumnWidth(5, 70);
			this._grdCajaIngresoDiario.setWidth(950);
			this._grdCajaIngresoDiario.setHeight(350);
			this._grdCajaIngresoDiario.setColumnVisibilityButtonVisible(false);
			this._grdCajaIngresoDiario.setShowCellFocusIndicator(true);
			this._grdCajaIngresoDiario.setStatusBarVisible(false);

		var rndImporte = new qx.ui.table.cellrenderer.Number("right");
		var frmImporte = new qx.util.format.NumberFormat();
			frmImporte.setPrefix("$");
			frmImporte.setMaximumFractionDigits(2);
			frmImporte.setMinimumFractionDigits(2);
			rndImporte.setNumberFormat(frmImporte);
		
		this._grdCajaIngresoDiario.getTableColumnModel().setDataCellRenderer(4, rndImporte);
		
		this._txdDiaDesde = new qx.ui.form.ow.DateText("Fecha Desde:");
			this._txdDiaDesde.getLabel().setWidth(80);
			this._txdDiaDesde.getDateText().setWidth(100);

		this._txdDiaHasta = new qx.ui.form.ow.DateText("Fecha Hasta:");
			this._txdDiaHasta.getLabel().setWidth(80);
			this._txdDiaHasta.getDateText().setWidth(100);
			
		this._cmbFiltraMedico = new qx.ui.form.ow.ComboFilter("Medico:", [{value:"0", label:"TODOS"}]);
			this._cmbFiltraMedico.getLabel().setWidth(70);
		
		this._btnImprimir = new qx.ui.form.Button("Imprimir");
		
		this._cmbTipoIngreso = new qx.ui.form.ow.ComboBox("Tipo de Ingreso:", [{value:"TODOS", label:"TODOS"}, {value:"PAR", label:"PARTICULARES"}, {value:"PARM", label:"PARTICULARES MINIMO"}, {value:"PLUS", label:"PLUS"}]);

		this._lblTotal = new qx.ui.basic.Label("<big><b>Total: $ </b></big>").set({rich:true});
		
		this._attachEvents();
		
		if (usuario == 1 || usuario == 5) {
			this._txdDiaDesde.setEnabled(true);
			this._txdDiaHasta.setEnabled(true);
		} else {
			this._txdDiaDesde.setEnabled(false);
			this._txdDiaHasta.setEnabled(false);
		}
		
		this._initForm();
		
		this._add(this._txdDiaDesde, {left:10, top:10});
		this._add(this._txdDiaHasta, {left:200, top:10});
		this._add(this._cmbFiltraMedico, {left:10, top:40});
		this._add(this._cmbTipoIngreso, {left:390, top:40});
		this._add(this._grdCajaIngresoDiario, {left:10, top:70});
		this._add(this._lblTotal, {left:620, top:430});
		this._add(this._btnImprimir, {left:800, top:430});
	},
	members :
	{
		_txdDiaDesde : null,
		_cmbFiltraMedico : null,
		_cmbTipoIngreso : null,
		_grdCajaIngresoDiario : null,
		_attachEvents : function ()
		{
			this._txdDiaDesde.getDateText().addListener("changeValue", this._getDatos, this);
			this._txdDiaHasta.getDateText().addListener("changeValue", this._getDatos, this);
			this._cmbFiltraMedico.addListener("changeValue", this._getDatos, this);
			this._cmbTipoIngreso.addListener("changeValue", this._getDatos, this);
			this._btnImprimir.addListener("execute", function () {
				window.open('reports/CajaIngresoCustom.php?diaDesde=' + this._txdDiaDesde.getValue() + '&diaHasta=' + this._txdDiaHasta.getValue() + '&medico=' + this._cmbFiltraMedico.getValue() + '&medicoNombre=' + this._cmbFiltraMedico.getValueDisplay() + '&tipo_ingreso=' + this._cmbTipoIngreso.getValue() + '&cod_clinica=' + this.cod_clinica,'','top=0,width=1024,height=600,scrollbars=1');
//				params.dia = this._txdDiaDesde.getValue();
//				params.medico = this._cmbFiltraMedico.getValue();
//				params.tipo_ingreso = this._cmbTipoIngreso.getValue();
			}, this);
		},
		_initForm : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CajaIngresoCustom");
			try
			{
				var result = rpc.callSync("getMedicos");
				for (var i in result)
				{
					this._cmbFiltraMedico.addValue(result[i]);
				}
			}
			catch (ex)
			{
				alert(ex);
			}
			this._cmbFiltraMedico.setValueDisplay("TODOS");
			this._getDatos();
		},
		_getDatos : function ()
		{
			var rpc = new qx.io.remote.Rpc();
			rpc.setTimeout(10000);
			rpc.setUrl("services/");
			rpc.setServiceName("CajaIngresoCustom");
			var params = new Object();
			params.diaDesde = this._txdDiaDesde.getValue();
			params.diaHasta = this._txdDiaHasta.getValue();
			params.medico = this._cmbFiltraMedico.getValue();
			params.tipo_ingreso = this._cmbTipoIngreso.getValue();
			params.cod_clinica = this.cod_clinica;
			try
			{
				var result = rpc.callSync("getCajaIngresoCustom", params);
				this._grdCajaIngresoDiario.getTableModel().setData(result);
				var total = 0;
				for (var i=0, count = this._grdCajaIngresoDiario.getTableModel().getRowCount(); i< count; i++)
				{
					total += parseFloat(this._grdCajaIngresoDiario.getTableModel().getValue(4, i));
				}
				if (isNaN(total))
					total = 0;
				
				total=Math.round(total*100)/100
				total=total.toFixed(2)
				this._lblTotal.setValue("<big><b>Total: $ </b></big>" + total + "");

			}
			catch (ex)
			{
				alert(ex);
			}

		}
	}
});
